Telegram Group & Telegram Channel
Note #24 Go и runtime
Существует много споров на тему Go рантайм и Go пакета runtime. Давайте разберемся с этим вопросом.

C одной стороны в Go есть рантайм, который написан на Go в отличии от Java(написан на С). C точки зрения архитектуры, рантайм - это просто коллекция нескольких уникальных частей, самые важные из которых: сборщик мусора и планировщик горутин (goroutine scheduler).

С другой стороны, Go рантайм также реализует фичи, которые экспортируются наружу c помощью пакета runtime. C помощью пакета runtime можно осуществлять управление сборщиком мусора и выводить различную дебаг информация см (runwww.tg-me.com/debug).
Либо вывести сколько памяти занимает ваша программа:

package main

import (
"runtime"
"fmt"
"time"
)

func PrintMememoryStats() {
var m runtime.MemStats
// The returned memory allocator statistics are up to date as of the call to ReadMemStats. This is in contrast with a heap profile, which is a snapshot as of the most recently completed garbage collection cycle.
runtime.ReadMemStats(&m)
fmt.Printf("Alloc = %v Mb", m.Alloc / 1024 / 1024)
fmt.Printf(" TotalAlloc = %v Mb", m.TotalAlloc / 1024 / 1024)
fmt.Printf(" Sys = %v Mb", m.Sys / 1024 / 1024)
fmt.Printf(" NumGC = %v\n", m.NumGC)
}
func main() {
PrintMememoryStats()
var total [][]int

for i := 0; i<3; i++ {
array := make([]int, 0, 4200000)
total = append(total, array)
PrintMememoryStats()
time.Sleep(time.Second)
}
PrintMememoryStats()
runtime.GC()
PrintMememoryStats()
}

Note: Также важно понимать, что Go рантайм не включает в себя виртуальную машину, а код программы на Go компилируется сразу в машинный код, кстати это позволяет нам так легко писать программы, которые легко портируются на разные ОС. Поэтому в контексте Go - когда говорят Go и runtime - это обычно имя пакета, а не виртуальное окружение в котором программа на Go запускается.



tg-me.com/golang_for_two/49
Create:
Last Update:

Note #24 Go и runtime
Существует много споров на тему Go рантайм и Go пакета runtime. Давайте разберемся с этим вопросом.

C одной стороны в Go есть рантайм, который написан на Go в отличии от Java(написан на С). C точки зрения архитектуры, рантайм - это просто коллекция нескольких уникальных частей, самые важные из которых: сборщик мусора и планировщик горутин (goroutine scheduler).

С другой стороны, Go рантайм также реализует фичи, которые экспортируются наружу c помощью пакета runtime. C помощью пакета runtime можно осуществлять управление сборщиком мусора и выводить различную дебаг информация см (runwww.tg-me.com/debug).
Либо вывести сколько памяти занимает ваша программа:

package main

import (
"runtime"
"fmt"
"time"
)

func PrintMememoryStats() {
var m runtime.MemStats
// The returned memory allocator statistics are up to date as of the call to ReadMemStats. This is in contrast with a heap profile, which is a snapshot as of the most recently completed garbage collection cycle.
runtime.ReadMemStats(&m)
fmt.Printf("Alloc = %v Mb", m.Alloc / 1024 / 1024)
fmt.Printf(" TotalAlloc = %v Mb", m.TotalAlloc / 1024 / 1024)
fmt.Printf(" Sys = %v Mb", m.Sys / 1024 / 1024)
fmt.Printf(" NumGC = %v\n", m.NumGC)
}
func main() {
PrintMememoryStats()
var total [][]int

for i := 0; i<3; i++ {
array := make([]int, 0, 4200000)
total = append(total, array)
PrintMememoryStats()
time.Sleep(time.Second)
}
PrintMememoryStats()
runtime.GC()
PrintMememoryStats()
}

Note: Также важно понимать, что Go рантайм не включает в себя виртуальную машину, а код программы на Go компилируется сразу в машинный код, кстати это позволяет нам так легко писать программы, которые легко портируются на разные ОС. Поэтому в контексте Go - когда говорят Go и runtime - это обычно имя пакета, а не виртуальное окружение в котором программа на Go запускается.

BY 🇺🇦 Go for two :)


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/golang_for_two/49

View MORE
Open in Telegram


🇺🇦 Go на двоих Telegram | DID YOU KNOW?

Date: |

Telegram announces Search Filters

With the help of the Search Filters option, users can now filter search results by type. They can do that by using the new tabs: Media, Links, Files and others. Searches can be done based on the particular time period like by typing in the date or even “Yesterday”. If users type in the name of a person, group, channel or bot, an extra filter will be applied to the searches.

A Telegram spokesman declined to comment on the bond issue or the amount of the debt the company has due. The spokesman said Telegram’s equipment and bandwidth costs are growing because it has consistently posted more than 40% year-to-year growth in users.

🇺🇦 Go на двоих from us


Telegram 🇺🇦 Go for two :)
FROM USA